#if 1
#include "key.h"
#include "OSAL.h"
#include "remote.h"
#include "log.h"
#include "led_di.h"

static uint8_t KEY_TaskID;
static uint8_t KEY_NUM_EVT = 0xC1;
uint8_t key_num = 0;	//按键数据
void key_Init(uint8_t task_id)
{
	KEY_TaskID = task_id;
	//key1
	hal_gpio_pin_init(P7,IE);
	hal_gpio_pull_set(P7,GPIO_PULL_UP);
	//key2
	hal_gpio_pin_init(P17,IE);
	hal_gpio_pull_set(P17,GPIO_PULL_UP);
	//key3
	hal_gpio_pin_init(P16,IE);
	hal_gpio_pull_set(P16,GPIO_PULL_UP);
	//key4
	hal_gpio_pin_init(P11,IE);
	hal_gpio_pull_set(P11,GPIO_PULL_UP);


	remote_init();//红外控制器
	osal_start_reload_timer(KEY_TaskID,KEY_NUM_EVT,20);
}

uint8_t key_Num(void)
{
	uint8_t key_ret = 0;
	if(!(((AP_GPIO->ext_porta) >> P7 )& 1))
	{
		while(!(((AP_GPIO->ext_porta) >> P7 )& 1));
		key_ret = 1;
	}
	else if(!(((AP_GPIO->ext_porta) >> P17 )& 1))
	{
		while(!(((AP_GPIO->ext_porta) >> P17 )& 1));
		key_ret = 2;		
	}
	else if(!(((AP_GPIO->ext_porta) >> P16 )& 1))
	{
		while(!(((AP_GPIO->ext_porta) >> P16 )& 1));
		key_ret = 3;		
	}
	else if(!(((AP_GPIO->ext_porta) >> P11 )& 1))
	{
		while(!(((AP_GPIO->ext_porta) >> P11 )& 1));
		key_ret = 4;		
	}
	return key_ret;
}

uint16_t KEY_ProcessEvent(uint8_t task_id,uint16_t events)
{
	if(task_id != KEY_TaskID)
	{
		return 0;
	}
	if(events & KEY_NUM_EVT)
	{
		
		key_num = key_Num();
		if(key_num)	
		{
			my_strcut remote_to_Task = {0};
        	remote_to_Task.data[0] = 0xbc;
			switch(key_num)
			{
				case 1:
					remote_to_Task.data[1] = 0x01;
					remote_to_Task.data[2] = 0x01;
					remote_to_Task.data[3] = !gobalVar.ledOpen;
					break;
				case 2:
					remote_to_Task.data[1] = 0x06;
					remote_to_Task.data[2] = 0x02;
					remote_to_Task.data[3] = 0x00;  
				
					if(msg_2.led_mode > 17 && msg_2.led_mode < 22)msg_2.led_mode = 1;
					else if(msg_2.led_mode != 17 && msg_2.led_mode < 25)msg_2.led_mode +=1;
					else if(msg_2.led_mode >= 25)msg_2.led_mode = 1;
					else msg_2.led_mode = 22;
					remote_to_Task.data[4] = msg_2.led_mode;     
					break;
				case 3:
					remote_to_Task.data[1] = 0x06;
					remote_to_Task.data[2] = 0x02;
					remote_to_Task.data[3] = 0x00;  
					remote_to_Task.data[4] = 20;
					if(!(msg_2.led_mode > 17 && msg_2.led_mode < 22))msg_2.led_mode = 18;
					else if(msg_2.led_mode == 21)msg_2.led_mode = 17;
					else msg_2.led_mode +=1;
					break;
				case 4:
				    remote_to_Task.data[1] = 0x13;
					remote_to_Task.data[2] = 0x01;
					remote_to_Task.data[3] = 0x01;
					break;
				default:
					break;
			}

			MyTask_SendData(LED_TaskID,&remote_to_Task);
        	osal_set_event(LED_TaskID,LED_Task_EVT);
		}
		//红外控制器
		if(remote_flag1 == 1)
		{
			remote_to_agreement();
			remote_flag = 0;
		}

		return events ^ KEY_NUM_EVT;
	}

	return 0;
}
#endif

